﻿using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Practices.EnterpriseLibrary.Validation;
using Microsoft.Practices.EnterpriseLibrary.Validation.Validators; 

namespace PSE.Framework.Service.Validation
{
    /// <summary>
    /// Interface para os casos em que o Validator precisa da referência ao objeto que contém 
    /// uma propriedade que está sendo validada.
    /// </summary>
    /// <remarks>
    /// Normalmente ao validar já teríamos o objeto owner da propriedade que estamos validando, 
    /// que dentro do Validator.DoValidate seria o currentTarget.
    /// O problema é que isso só funciona quando o atributo de validação é construído através de herança.
    /// No nosso caso, foi feito através de wrapper, para evitar referência à Enterprise Library (EL).
    /// Desta forma, criamos os validators fora do esquema da EL, e o currentTarget fica igual ao 
    /// objectToValidate, que é um objeto criado sobre a propriedade validada.
    /// Esta interface define uma propriedade parentObject que deve ser setada, para que então 
    /// o método Validator.DoValidate possa usá-la se precisar o objeto owner.
    /// </remarks>
    public interface IParentObjectRequiredToValidate
    {

        object parentObject
        {
            set;
        }

    }
}
